package com.jie.utility;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.Map;

public class JwtUtils {
    private static String signKey="linzhijie";
    private static  Long expire=43200000L;

    /**
     * 生成Jwt令牌
     * @param claims
     * @return
     */
    public static String generateJwt(Map<String,Object> claims){
    String jwt = Jwts.builder()
            .signWith(SignatureAlgorithm.HS256, signKey)//签名算法
            .setClaims(claims)//自定义内容
            .setExpiration(new Date(System.currentTimeMillis() + expire))//设置有效期为一个小时
            .compact();
    return jwt;
}

    /**
     * 解析Jwt令牌
     * @param jwt
     * @return
     */
    public static R parseJwt(String jwt){
    Claims claims = null;
    try {
        claims = Jwts.parser()
                .setSigningKey(signKey)
                .parseClaimsJws(jwt)
                .getBody();
    } catch (ExpiredJwtException e) {
        System.err.println("令牌时间超时");
        return R.error("令牌时间超时");
    } catch (MalformedJwtException e) {
        System.err.println("令牌错误");
        return R.error("令牌错误");
    }catch (SignatureException e){
        return R.error("NOTLOGIN");
    }
    return R.success("解析成功！",claims);
}
}
